package com.hxh.generater.vue.genBase;

import com.hxh.entity.Project;
import lombok.extern.slf4j.Slf4j;

/**
 * 项目的创建流程，后续使用不同的模板生成代码时，需要继承本类 通过反射,动态调用
 */
@Slf4j
public abstract class InitVueProject {

    /**
     * 初始化表的api和vue文件
     *
     * @param project
     * @param initExtendTable
     */
    public abstract void generationAllApiAndView(Project project, boolean initExtendTable) throws Exception;

    /**
     * 初始化系统基础文件
     *
     * @param project
     */
    public abstract void initSystemBase(Project project) throws Exception;


    /**
     * @param project:
     * @return void
     * @author HXH
     * @description:必须要创建的核心代码、定义创建的流程 通过反射, 动态调用
     * @date 2024/5/21
     **/
    public void initCore(Project project, Boolean initExtendTable) throws Exception {
        //初始化表的api和vue文件
        generationAllApiAndView(project, initExtendTable);

        //初始化系统基础代码
        //生成所有表代码后，再生成系统核心代码，是为了防止核心代码被覆盖
        initSystemBase(project);

        initAddition(project);

    }

    /**
     * @return void
     * @author HXH
     * @description: 可选组件
     * @date 2024/5/21
     **/
    public abstract void initAddition(Project project);
}
